# import numpy as np
# import pandas as pd
# import matplotlib.pyplot as plt

# 利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。
# 书中的数据，主要指的是结构化数据
# 多维数组（矩阵）
# 表格型数据，其中各列可能是不同的类型（字符串、数值、日期等）
# 通过关键列（对于SQL用户而言，就是主键和外键）相互联系的多个表
# 间隔平均或不平均的时间序列
# 大部分数据集都能被转化为更加适合分析和建模的结构化形式
# 如果不行，也可以将数据集的特征提取为某种结构化形式


# Python的不足
# Python是一种解释型编程怨言，因此大部分Python代码都要比用编译型语言（Java和C++）编写的代码运行慢的多
# 对于高并发、多线程的应用程序而言（尤其是拥有许多计算密集型现成的应用程序），
# Python并不是一种理想的编程语言。Python由一个叫做全局解释器锁的东西，防止解释器同时
# 执行多条Python字节码指令的机制。
# 这并不是说Python不能执行真正的多线程并行代码，只不过这些代码不能在单个Python进程中执行而已


# 重要的Python库


# numpy
# numpy是Python科学计算的基础包。它提供了以下功能（不限于此）：
# 快速高效的多维数组对象ndarray
# 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
# 用于读写硬盘上基于数组的数据集的工具
# 线性代数运算、傅里叶变换，以及随机数生成
# 用于将C、C++/Fortran代码集成到Python工具中
# 在数据分析方面还有另外一个主要作用，即作为在算法之间传递数据的容器
# 对于数值型数据，numpy数组在存储和处理数据时要比内置的Python数据结构高效得多
# 由低级语言（C和Fortran）编写的库可以直接操作numpy数组中的数据，无需进行任何数据复制工作


# pandas
# pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数
# 本书用得最多的pandas对象时DataFrame，它是一个面向列的二维表结构，且含有行标和列标
# pandas兼具numpy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理能力
# 它提供了复杂精细的索引功能，以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作
# pandas提供了大量适用于金融数据的高性能时间序列功能和工具。
# DATAFrame相当于R语言的data.frame对象，但后者只是前者所提供的功能的一个子集


# matplotlib
# matplotlib是最流行的用于绘制数据图表的Python库。


# IPython
# IPython是Python科学计算标准工具集的组成部分，它将其他所有的东西联系到了一起
# 主要用于交互式数据处理和利用matplotlib对数据进行可视化处理。


# scipy
# scipy是一组专门解决科学计算中各种标准问题域的包的集合，主要包括下面这些包
# scipy.integrate:数值积分例程和微分方程求解器
# scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能
# scipy.optimize:函数优化器（最小化器）以及根查找算法
# scipy.signal:信号处理工具
# scipy.sparse:稀疏矩阵和稀疏线性系统求解器
# scipy.special:SPECFUN(这是一个实现了许多常用数学函数（如伽玛函数）的Fortran库)的包装器
# scipy.stats:标准连续和离散概率分布（如密度函数、采样器、连续分布函数等）、各种统计检验方法，以及更好的描述统计法
# scipy.weave:利用内联C++代码加速数组计算的工具
# numpy与scipy的有机结合完全可以替代MATLAB的计算功能（包括其插件工具篇）


# 行话
# 数据规整
# 指将非结构化和散乱数据处理为结构化或整洁形式的整个过程。
# 伪码
# 算法或过程的"代码式"描述，而这些代码本身并不是实际有效的源代码
# 语法糖
# 这是一种编程语法，不会带来新的特性，但却能使代码更易读、更易写